package JavaSE.CODE.javaCollection;

import java.util.HashMap;

public class HashMapDemo {
    public static void main(String[] args) {
        HashMap<Student,String> hashMap = new HashMap<>();
        Student s1 = new Student("孙文强",10);
        Student s2 = new Student("李玉峰",11);
        Student s3 = new Student("张馨予",12);
        hashMap.put(s1,"bj");
        hashMap.put(s2,"nj");
        hashMap.put(s3,"sh");
        System.out.println(hashMap);

        //hashMap存在的问题: 自定义类不满足“去重” 要求，究其原因是hashmap底层实现是哈希表——哈希表在存储自定义类的时候，如果自定义类中没有重写关于hashcode和equals方法的话，会调用默认的方法，而新对象地址不同，就会被认为不同。
        //可以认为hashcode和equal都与地址有关
        hashMap.put(new Student("张馨予",12),"xx");
        hashMap.put(new Student("张馨予",12),"xx");
        System.out.println(hashMap.size());
        //可以看到，通过修改Student的hashcode和equals方法，达到目的

        hashMap.remove(new Student("张馨予",12));
        //通过key来删除
        System.out.println(hashMap.size());

    }
}
